package com.gccloud.design.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gccloud.design.dto.SdRepoParticipantConfDto;
import com.gccloud.design.entity.SdRepoParticipantConfEntity;
import com.gccloud.design.vo.SdRepoParticipantConfVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 实现功能【环节参与人配置持久层】
 *
 * @author hu.hongdou
 * @date 2022/2/21
 */
@Mapper
public interface SdRepoParticipantConfigDao extends BaseMapper<SdRepoParticipantConfEntity> {

    /**
     * 环节参与者配置：查询环节参与者
     *
     * @param repoId       环节实例id
     * @param activityName 环节名称
     * @param page         分页对象
     * @return 列表
     */
    List<SdRepoParticipantConfVo> getParticipantByRepoId(String repoId, String activityName, Page<SdRepoParticipantConfVo> page);

    /**
     * 环节参与者配置：查询环节参与者
     *
     * @param repoId       环节实例id
     * @param activityName 环节名称
     * @return 列表
     */
    List<SdRepoParticipantConfVo> getParticipantByRepoId(String repoId, String activityName);

    /**
     * 修改环节参与者
     *
     * @param sdRepoParticipantConfDto 环节参与人配置
     * @return 数量
     */
    Integer updateParticipant(SdRepoParticipantConfDto sdRepoParticipantConfDto);

    /**
     * 删除环节参与者
     *
     * @param participantConfId 环节参与人标识
     * @return 数量
     */
    Integer removeParticipantConfByParticipantConfId(@Param("participantConfId") Integer participantConfId);

    /**
     * 查询人员
     *
     * @param participantOrgId 环节参与人机构标识
     * @param participantId    环节参与人标识
     * @return 列表
     */
    List<SdRepoParticipantConfVo> queryParticipantLists(@Param("participantOrgId") String participantOrgId, @Param("participantId") String participantId);

    /**
     * 添加环节参与者
     *
     * @param sdRepoParticipantConfDtos 环节参与人配置实体
     * @return 数量
     */
    Integer saveParticipant(@Param("sdRepoParticipantConfDtos") List<SdRepoParticipantConfDto> sdRepoParticipantConfDtos);

    /**
     * 查询机构
     *
     * @param orgId   机构标识
     * @param orgName 机构名称
     * @return 环节参与人配置实体列表
     */
    List<SdRepoParticipantConfVo> getOrg(@Param("orgId") String orgId, @Param("orgName") String orgName);

    /**
     * 查询角色
     *
     * @param roleName 角色名称
     * @param code     角色编码
     * @return 环节参与人配置实体列表
     */
    List<SdRepoParticipantConfVo> getRole(@Param("roleName") String roleName, @Param("code") String code);

    /**
     * 查询工位
     *
     * @param stationName 工位名称
     * @param code        工位编码
     * @param state       状态
     * @return 环节参与人配置实体列表
     */
    List<SdRepoParticipantConfVo> getStation(@Param("stationName") String stationName, @Param("code") String code, @Param("state") String state);


}
